In a computing environment with many computing devices, such as a virtual server or cloud computing environment with many computer servers, monitoring the operation and performance of such computing devices can be a difficult task. For example, a customer may want to monitor performance, such as processor utilization or memory utilization, of a number of virtual computing resources to ensure that they are operating correctly.
In order to monitor operation and performance of computing resources, monitoring data can be collected. Some solutions have been developed that aggregate monitoring data and store the aggregated monitoring data in a database structure. Once the monitoring data has been aggregated and stored in the database, querying can be performed.
However, such existing monitoring solutions suffer from a number of limitations. For example, query options using pre-aggregated monitoring data are limited based on how the data was aggregated.
Furthermore, the cost of performing a query using such existing monitoring solutions may not be predictable in terms of time or computing resources. For example, a customer may not know if a particular query will take a number of seconds or minutes, how the particular query will scale as the amount of monitoring data, or the time period, increases, etc.
Therefore, there exists ample opportunity for improvement in technologies related to managing monitoring data.